The ability to collect data about a software application's execution as it runs is often referred to as a “flight recorder.” The cost of a software application flight recorder, though, is frequently thought of as being cost prohibitive, involving a significant amount of overhead. More specifically, a flight recorder in software is typically built as an in-memory circular buffer that stores frequent activity with very little overhead. The buffer can be dumped out on demand or when a problem occurs. Despite little overhead and despite being very useful when a problem occurs, tracking every read/write into such a buffer can be expensive and can reduce performance by 50% or more. There is usually no “log” and no “transactions” when using a flight recorder. A flight recorder is very simple.
However, the flight recorder does allow, the trace file to be played back for root cause analysis when a problem arises. Thus, there is often no need to reproduce the problem. In many causes, the source of the problem can be determined from a single occurrence. Transactional memory has been used for other purposes, but not for diagnostic recording.